// BIG TUTO - SDL 2.0
// Chapitre 3 (Ouvrir une fenêtre ) 
// draw.c


/* Et voici les fonctions qui vont se charger de l'affichage. Pour l'instant, c'est très 
   embryonnaire, puisqu'on affiche... rien !  Draw() se contente donc de remplir notre renderer de
   la couleur noire, avec un canal alpha (= transparence) à 255 pour que la couleur soit complètement
   opaque : (0, 0, 0, 255) = (Rouge, Vert, Bleu, Alpha) et de l'afficher (présenter) à l'écran. 

   On voit donc que cela s'est un peu complexifié depuis la SDL 1.2, avec l'arrivée de notre 
   renderer, mais cela fonctionne un peu de la même façon qu'avec XNA et permet beaucoup plus de
   choses, et surtout, on va enfin pouvoir faire péter le framerate avec des graphismes HD !  
   On reviendra sur ces points-là plus tard, quand on essaiera d'afficher des sprites à l'écran.

   Quant à la fonction delay, elle permet d'attendre le temps nécessaire pour respecter les 60 
   images/seconde (donc une image toutes les 16ms à peu près). */

  #include "draw.h"


  void draw(void)
  {

    // Remplit le renderer de noir, efface l'écran et l'affiche.
    SDL_SetRenderDrawColor(jeu.renderer, 0, 0, 0, 255);  //RGBA (ici le noir)
    SDL_RenderClear(jeu.renderer);     // Efface l'écran
    SDL_RenderPresent(jeu.renderer);   // Remplace SDL_Flip() de la sdl 1.2


    // Delai
    SDL_Delay(1);

  }



  void delay(unsigned int frameLimit)
  {
    // Gestion des 60 fps (images/stories/seconde)
    unsigned int ticks = SDL_GetTicks();

    if (frameLimit < ticks)
    {
        return;
    }

    if (frameLimit > ticks + 16)
    {
        SDL_Delay(16);
    }

    else
    {
        SDL_Delay(frameLimit - ticks);
    }
  }
